# ############# loading data #############
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyr)
library(ggplot2)
library(plotly)
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(rbokeh)
## Registered S3 method overwritten by 'pryr':
## method from
## print.bytes Rcpp
# load unemployment data, set session to data file
unemployment <- read.csv("../data/unemployment.csv")
# create main dataframe `gender`
gender <- unemployment %>%
select(Year, Month, 5:6)
# ######### rate by date, gender #########
# add manipulated `date` col
gender_all <- gender %>%
mutate(date = as.Date(paste(Year, Month, "01", sep = "-"),
format = "%Y-%b-%d"))
# remove `Year` and `Date` cols
gender_all <- gender_all %>%
select(date, 3:4)
# rename cols of interest
gender_all <- gender_all %>%
rename(men = Unemployment_Rate_20_Years_Over_Men,
women = Unemployment_Rate_20_Years_Over_Women)
# aggregate/group gender unemployment rates
gender_all <- gender_all %>%
gather(gender_type, unemployment_rate, 2:3)
gender_all <- gender_all %>%
filter(!is.na(unemployment_rate)) #%>%
#arrange(unemployment_rate)
# ######## rate by 2020 month, gender ########
# comments to be updated for this section
gender_2020 <- unemployment %>%
select(Year, Month, 5:6)
gender_2020 <- gender_2020 %>%
filter(Year == 2020) %>%
select(-Year)
gender_2020 <- gender_2020 %>%
rename(men = Unemployment_Rate_20_Years_Over_Men,
women = Unemployment_Rate_20_Years_Over_Women) %>%
gather(gender_type, unemployment_rate, 2:3) %>%
filter(!is.na(unemployment_rate)) #%>%
# ########### data visualization ############
# create overall plot
# rate by date, gender
gender_all_plot <-
ggplot(data = gender_all, aes(x = date, y = unemployment_rate)) +
geom_line(aes(color = gender_type), size = 1) +
labs(title = "Unemployment Rate (20 Years or Older)",
x = "Year", y = "Unemployment Rate")
gender_all_plot

# create 2020 plot
# rate by month, gender
# also shows gender gap
gender_2020_plot <-
ggplot(data = gender_2020, aes(x = Month, y = unemployment_rate)) +
geom_point(aes(color = gender_type), size = 2) +
geom_line() +
labs(title = "Unemployment Rate (20 Years or Older)",
x = "Month (2020)", y = "Unemployment Rate")
gender_2020_plot

# ############# miscellaneous ##############
# snagged from justin to try out
# create interactive plot
chart_type <- list(
x = 1.35,
y = .7,
buttons = list(
list(
method = "update",
args = list(list("stackgroup" = "")),
label = "Scatter"
),
list(
method = "update",
args = list(list("stackgroup" = "one")),
label = "Stackgroup"
)
)
)
hover <- list(
x = 1.65,
y = .7,
buttons = list(
list(
method = "relayout",
args = list(list("hovermode" = "closest")),
label = "Hover off"
),
list(
method = "relayout",
args = list(list("hovermode" = "x")),
label = "Hover on "
)
)
)
# Create interactive plot with plotly
# symbol = ~gender_type,
# fill = "tozeroy"
plot_ly(
data = gender_all,
x = ~date,
y = ~unemployment_rate,
type = "scatter",
alpha = .7,
color = ~gender_type,
mode = "markers",
text = ~ paste("Date: ", date, "<br>Unemployment Rate:", unemployment_rate,
"<br>gender:", gender_type)
) %>%
layout(
title = "Unemployment Rate (20 Years or Older)",
updatemenus = list(chart_type, hover),
yaxis = list(title = "Unemployment Rate (%)"),
xaxis = list(
title = "Date",
type = "date",
range = c("2000-01-01", "2020-10-01"),
rangeselector = list(
buttons = list(
list(
count = 2,
label = "2 yr",
step = "year",
stepmode = "backward"
),
list(
count = 5,
label = "4 yr",
step = "year",
stepmode = "backward"
),
list(
count = 13,
label = "12 yr",
step = "year",
stepmode = "backward"
),
list(step = "all")
)
),
rangeslider = list(type = "date")
)
)
## Warning: `arrange_()` is deprecated as of dplyr 0.7.0.
## Please use `arrange()` instead.
## See vignette('programming') for more help
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels